package com.idp.web.service;

import com.idp.common.persistence.Page;
import com.idp.web.entity.HospitalDepartment;

import java.util.List;

/**
 * 医院与科室关系service接口
 *
 * @author xubinren
 * @version 1.0
 * @date 2018/2/28
 */
public interface IHospitalDepartmentService {

    /**
     * 根据条件分页查询医院科室关系列表
     *
     * @param hospitalDepartment 查询条件
     * @param page               分页信息
     * @return Page<HospitalDepartment>
     */
    Page<HospitalDepartment> findByPage(HospitalDepartment hospitalDepartment, Page<HospitalDepartment> page);

    /**
     * 根据条件查询医院科室关系列表
     *
     * @param hospitalDepartment 查询条件
     * @return List<HospitalDepartment>
     */
    List<HospitalDepartment> findBySearch(HospitalDepartment hospitalDepartment);

    /**
     * 根据id查询对应的医院科室关系信息
     *
     * @param id 主键id
     * @return HospitalDepartment
     */
    HospitalDepartment getById(String id);

    /**
     * 新增
     *
     * @param hospitalDepartment 医院科室关系信息
     * @param userId             用户id
     */
    void add(HospitalDepartment hospitalDepartment, String userId);

    /**
     * 修改
     *
     * @param hospitalDepartment 医院科室关系信息
     * @param userId             用户id
     */
    void update(HospitalDepartment hospitalDepartment, String userId);

    /**
     * 添加或者修改
     *
     * @param hospitalId    医院id
     * @param departmentIds 科室ids
     * @param userId        用户id
     */
    boolean saveOrUpdate(String hospitalId, String departmentIds, String userId);

    /**
     * 根据医院id和科室id删除对应的医院科室信息表信息
     *
     * @param hospitalId 医院id
     * @param departmentId 科室id
     * @return void
     */
    void deleteBy(String hospitalId, String departmentId);

    /**
     * 根据医院主键获取对应的医院下科室ids
     *
     * @param hospitalId 医院id
     */
    List<String> selectDepartmentIds(String hospitalId);

    /**
     * 根据医院id和科室id获取对应的医院科室信息表信息
     *
     * @param hospitalId 医院id
     * @param departmentId 科室id
     * @return HospitalDepartment
     */
    HospitalDepartment getHospitalDepartment(String hospitalId, String departmentId);
}
